﻿//-----------------------------------------------------------------------
// <copyright file="WorkingMemory.cs" company="tuliprules.org">
//     Copyright (c) 2010 tuplelister, tuliprules.org.
// </copyright>
// <summary>This is the WorkingMemory class.</summary>
//-----------------------------------------------------------------------

namespace Tulip.Rules
{
    using System;

    /// <summary>
    /// A Tulip working memory session.
    /// </summary>
    public class WorkingMemory : IWorkingMemory
    {
        #region IWorkingMemory Members

        /// <summary>
        /// Assert a fact  to the working memory.
        /// </summary>
        /// <param name="fact">The fact to be asserted.</param>
        public void Assert(object fact)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Assert a collection of facts to the working memory.
        /// </summary>
        /// <param name="facts">The collection of facts to be asserted.</param>
        public void Assert(object[] facts)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Modify a fact in the working memory.
        /// </summary>
        /// <remarks>This overload does not support refraction.</remarks>
        public void Modify()
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Modify a fact in the working memory.
        /// </summary>
        /// <param name="mode">The mode of modification.  This parameter can be used to control refraction and prevent looping.</param>
        public void Modify(ModifyMode mode)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Retract a fact from the working memory.
        /// </summary>
        /// <param name="fact">The fact to be retracted.</param>
        public void Retract(object fact)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Retract a collection of facts from the working memory.
        /// </summary>
        /// <param name="facts">The collection of facts to be retracted.</param>
        public void Retract(object[] facts)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Retract all facts of a given type from the working memory.
        /// </summary>
        /// <param name="factType">The type of fact to be retracted.</param>
        public void RetractByType(Type factType)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Retract all facts of a collection of given types from the working memory.
        /// </summary>
        /// <param name="factTypes">The collection of types of fact to be retracted.</param>
        public void RetractByType(Type[] factTypes)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Clear all facts from the the working memory.
        /// </summary>
        public void Clear()
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
